package main

import "fmt"

func main1() {
	/*
		if 表达式1 {
		    分支1
		} else if 表达式2 {
		    分支2
		} else{
		    分支3
		}
	*/

	//在go语言中if else的花括号必须与其是在同一行

	//1，基本写法
	var score int = 65
	if score >= 90 {
		fmt.Println("A")
	} else if score > 75 {
		fmt.Println("B")
	} else {
		fmt.Println("C")
	}
	//if判断特殊写法
	/*
		这种写法，是为了判断的内容尽在这部分的代码块中起效，除了这些代码块的作用域，在使用不可以
	*/
	if score := 65; score >= 90 {
		fmt.Println("A")
	} else if score > 75 {
		fmt.Println("B")
	} else {
		fmt.Println("C")
	}

	score1 := 100
	if score1 > 95 {
		fmt.Println("A+")
	} else if score1 > 90 {
		fmt.Println("A")
	}
	//:=短声明变量是要求必须有新变量，已经声明过的变量不能再次使用
}

func main2() {
	//1.for循环体基础写法
	for i := 0; i < 10; i++ {
		fmt.Print(i, " ")
	}
	fmt.Println()

	//2.省略初始语句，但是必须保留初始语句后面的分号
	var j = 0
	for ; j < 10; j++ {
		fmt.Print(j, " ")
	}
	fmt.Println()

	//3.省略初始语句和结束语句
	var k = 10
	for k > 0 {
		fmt.Print(k, " ")
		k--
	}
	fmt.Println()
	//其实也就是类似于while循环

	//4.无限循环
	//for {
	//	fmt.Print("王宏宇")
	//}

	//5.break
	for m := 0; m < 5; m++ {
		fmt.Print(m, " ")
		if m == 3 {
			break
		}
	}
	fmt.Println()

	//6.continue 跳过本次循环，继续执行下一次循环
	for n := 0; n < 5; n++ {

		if n == 3 {
			continue
		}
		fmt.Print(n, " ")
	}
	fmt.Println()

	/*
		Go语言中可以使用for range遍历数组、切片、字符串、map 及通道（channel）。
		通过for range遍历的返回值有以下规律：

		数组、切片、字符串返回索引和值。
		map返回键和值。
		通道（channel）只返回通道内的值
	*/

}

func main() {

	//switch 名字{}
	finger := 3
	switch finger {
	case 1:
		fmt.Println("大拇指")
	case 2:
		fmt.Println("食指")
	case 3:
		fmt.Println("中指")
	case 4:
		fmt.Println("无名指")
	case 5:
		fmt.Println("小拇指")
	default:
		fmt.Println("无效的输入！")
	}

	//case 一次可以判断多个值
	n := 7
	switch n {
	case 1, 3, 5, 7, 9:
		fmt.Println("奇数")
	case 2, 4, 6, 8:
		fmt.Println("偶数")
	default:
		fmt.Println(n)
	}

	//3.case中使用表达式
	//age := 30
	//switch age {
	//case (age > 18):
	//	fmt.Println("好好学习吧")
	//case (age < 18):
	//	fmt.Println("好好工作吧")
	//default:
	//	fmt.Println("活着真好")
	//}

	fmt.Println("九九乘法表打印：")
	for i := 1; i <= 9; i++ {
		for j := 1; j <= i; j++ {
			sum := i * j
			fmt.Printf("%d * %d = %d ", i, j, sum)
		}
		fmt.Println()
	}
}
